/*
 * Copyright (c) 2001-2023 cnstrong.cn Corporation Limited. All rights reserved.
 * This software is the confidential and proprietary information of cnstrong.cn Company.
 * ("Confidential Information").
 * You shall not disclose such Confidential Information and shall use it only
 * in accordance with the terms of the license agreement you entered into with cnstrong.cn.
 */
package com.treeconfig.render.service;

import com.treeconfig.render.dataobject.ProjectUserDO;
import com.treeconfig.render.param.ListProjectUserParam;
import com.treeconfig.render.param.SaveProjectUserParam;

/**
 * 项目人员服务
 *
 * @author Braveheart
 * @version V1.0
 * @since 2023-12-29
 */
public interface ProjectUserService {

    /**
     * 通过oa账号获取默认所在项目编码
     *
     * @param oa oa账号
     * @return 项目编码
     */
    String getDefaultProjectCodeByOa(String oa);

    /**
     * 保存项目用户
     * 有id更新、无id新增
     *
     * @param param 项目用户信息
     * @return 成功数量
     */
    int saveProjectUser(SaveProjectUserParam param);

    /**
     * 分页查询项目成员列表
     *
     * @param param 工程code
     * @return 分页项目成员信息结果
     */
    Page<ProjectUserDO> listProjectUser(ListProjectUserParam param);

    /**
     * 删除项目成员通过id
     *
     * @param id 主键
     * @param operateOa 操作人oa账号
     * @return 成功数量
     */
    int deleteById(Long id, String operateOa);

    /**
     * 通过主键获取项目成员信息
     *
     * @param id 主键
     * @return 项目成员信息
     */
    ProjectUserDO getById(Long id);

    /**
     * 设置默认项目
     *
     * @param id 主键
     * @param operateOa 操作人oa账号
     * @return 成功数量
     */
    int setDefaultProject(Long id, String operateOa);

}
